package com.passion.fs.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.passion.fs.entity.FileInfo;
import com.passion.fs.vo.DirInfoVO;
import com.passion.fs.vo.DtreeNode;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 注意service层方法命名规范：
 * 分页查询方法    （使用 page 做前缀）
 * 查询单个对象方法（使用 get 做前缀）
 * 查询多个对象方法（使用 list 做前缀）
 * 统计数量方法    （使用 count 做前缀）
 * 新增方法        （使用 save / insert 做前缀）
 * 删除方法        （使用 remove / delete 做前缀）
 * 修改方法        （使用 update 做前缀）
 * 
 * 【t_fs_file_info】表服务接口
 * @author ZhuYin<zyexplorej2ee@sina.com>
 * @since  2025年01月06日
 */
public interface FileInfoService extends IService<FileInfo> {

    /**
     * 方法说明：根据文件在系统中的唯一名称来获取文件信息对象
     *
     * @param fileSysName 文件在文件系统中的唯一名称
     * @return 【t_fs_file_info】表实体类;
     * @author ZhuYin
     * @since 2025年01月07日
     */
    FileInfo getFileInfo(String fileSysName);

    /**
     * 方法说明：根据目录id来获取该目录下的所有目录或文件对象
     *
     * @param dirId 目录id
     * @return 返回该目录下的所有目录或文件对象集合
     * @author ZhuYin
     * @since 2025年01月07日
     */
    List<FileInfo> listByDirId(String dirId);

    /**
     * 方法说明：查询目录信息
     *
     * @param dirId 目录id
     * @return 类描述：目录信息VO
     * @author ZhuYin
     * @since 2025年01月08日
     */
    DirInfoVO getDirInfo(String dirId);

    /**
     * 方法说明：目录管理
     *
     * @return 返回目录管理集合
     * @author ZhuYin
     * @since 2025年01月08日
     */
    List<DtreeNode> getTree();

    /**
     * 方法说明：获取文件夹树
     *
     * @return 返回文件夹树
     * @author ZhuYin
     * @since 2025年01月09日
     */
    List<DtreeNode> getDirTree();

    /**
     * 方法说明：删除树节点
     *
     * @param id 树节点ID
     * @return true-成功 false-失败
     * @author ZhuYin
     * @since 2025年01月09日
     */
    boolean deleteTreeNode(String id);

    /**
     * 方法说明：下载文件
     *
     * @param id        文件id
     * @param response  相应对象
     * @author ZhuYin
     * @since 2025年01月09日
     */
    void download(String id, HttpServletResponse response);
}